home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 7 / Gekikoh Dennoh Club Vol. 7 (Japan).7z / Gekikoh Dennoh Club Vol. 7 (Japan) (Track 01).bin / games / otoko / source.lzh / txfont.c < prev    next >
C/C++ Source or Header  |  1999-06-14  |  2KB  |  126 lines

  1. #include <sys/iocs.h>
  2. #include "txfont.h"
  3.  
  4. static char *page_ptr;        /* 表示画面の左上のアドレス */
  5. static short cursor_x = 0, cursor_y = 0;
  6. static char *cursor_ptr;    /* カーソル位置のアドレス */
  7.  
  8.  
  9.  
  10. /* 表示画面の左上のアドレスを指定(0xe00000 とか) */
  11. void TxfontPage (char *p)
  12. {
  13.     page_ptr = p;
  14.     cursor_ptr = p + cursor_y * 128 * 8 + cursor_x;
  15. }
  16.  
  17.  
  18.  
  19. void TxfontCursor (short x, short y)
  20. {
  21.     cursor_x = x;
  22.     cursor_y = y;
  23.     cursor_ptr = page_ptr + cursor_y * 128 * 8 + cursor_x;
  24. }
  25.  
  26.  
  27. int TxfontInit0 (void)
  28. {
  29.     TxfontPage ((void *) 0xe00000);    /* デフォルト値 */
  30.     return (0);
  31. }
  32.  
  33.  
  34.  
  35. /* 1文字表示(内部用・コントロールコードなし) */
  36. static void disp1 (char c)
  37. {
  38.     char *t;
  39.     unsigned char *p = font_data + (((int) c - 0x20) << 4);
  40.  
  41.     t = (char *) cursor_ptr;
  42.     *(t + 128 * 0) = *p++;
  43.     *(t + 128 * 1) = *p++;
  44.     *(t + 128 * 2) = *p++;
  45.     *(t + 128 * 3) = *p++;
  46.     *(t + 128 * 4) = *p++;
  47.     *(t + 128 * 5) = *p++;
  48.     *(t + 128 * 6) = *p++;
  49.     *(t + 128 * 7) = *p++;
  50.  
  51.     t += 0x020000;
  52.     *(t + 128 * 0) = *p++;
  53.     *(t + 128 * 1) = *p++;
  54.     *(t + 128 * 2) = *p++;
  55.     *(t + 128 * 3) = *p++;
  56.     *(t + 128 * 4) = *p++;
  57.     *(t + 128 * 5) = *p++;
  58.     *(t + 128 * 6) = *p++;
  59.     *(t + 128 * 7) = *p++;
  60.  
  61.     cursor_ptr++;
  62.     cursor_x++;
  63. }
  64.  
  65.  
  66.  
  67. /* 1文字表示 */
  68. void TxfontPutchar (char c)
  69. {
  70.     int sp;
  71.  
  72.     sp = _iocs_b_super (0);
  73.     switch (c) {
  74.     case 0x09:
  75.         cursor_x = (cursor_x + 8) & 0xfff8;
  76.         cursor_ptr = page_ptr + cursor_y * 128 * 8 + cursor_x;
  77.         break;
  78.     case 0x0d:
  79.         cursor_x = 0;
  80.         cursor_y++;
  81.         cursor_ptr = page_ptr + cursor_y * 128 * 8;
  82.         break;
  83.     case 0x0a:
  84.         break;
  85.     default:
  86.         disp1 (c);
  87.     }
  88.     if (sp > 0)
  89.         _iocs_b_super (sp);
  90. }
  91.  
  92.  
  93.  
  94. /* 文字列表示 */
  95. void TxfontPuts (char *c)
  96. {
  97.     int sp;
  98.  
  99.     sp = _iocs_b_super (0);
  100.     while (*c != 0) {
  101.         switch (*c) {
  102.         case 0x09:
  103.             cursor_x = (cursor_x + 8) & 0xfff8;
  104.             cursor_ptr = page_ptr + cursor_y * 128 * 8 + cursor_x;
  105.             break;
  106.         case 0x0d:
  107.             break;
  108.         case 0x0a:
  109.             cursor_x = 0;
  110.             cursor_y++;
  111.             cursor_ptr = page_ptr + cursor_y * 128 * 8;
  112.             break;
  113.         default:
  114.             disp1 (*c);
  115.         }
  116.         c++;
  117.     }
  118.     if (sp > 0)
  119.         _iocs_b_super (sp);
  120. }
  121.  
  122.  
  123. void TxfontTini0 (void)
  124. {
  125. }
  126.